| Version | ID |
|---|---|
| 1.14.4 | 0x27 |
| 1.15.2 | 0x28 |
| Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
|---|---|---|---|---|---|---|---|
| 0x28 | Play | Client | |||||
| Window ID | VarInt | The ID of the window that is open; this is an int rather than a byte. | |||||
| Size | Byte | The number of trades in the following array | |||||
| Trades | Input item 1 | Array | Slot | The first item the villager is buying | |||
| Output item | Slot | The item the villager is selling | |||||
| Has second item | Boolean | Whether there is a second item | |||||
| Input item 2 | Optional Slot | The second item the villager is buying; only present if they have a second item. | |||||
| Trade disabled | Boolean | True if the trade is disabled; false if the trade is enabled. | |||||
| Number of trade uses | Integer | Number of times the trade has been used so far | |||||
| Maximum number of trade uses | Integer | Number of times this trade can be used | |||||
| XP | Integer | ||||||
| Special Price | Integer | ||||||
| Price Multiplier | Float | ||||||
| Demand | Integer | ||||||
| Villager level | VarInt | Appears on the trade GUI; meaning comes from the translation key merchant.level. + level. 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master |
|||||
| Experience | VarInt | Total experience for this villager (always 0 for the wandering trader) | |||||
| Is regular villager | Boolean | True if this is a regular villager; false for the wandering trader. When false, hides the villager level and some other GUI elements. | |||||
| Can restock | Boolean | True for regular villagers and false for the wandering trader. If true, the "Villagers restock up to two times per day." message is displayed when hovering over disabled trades. | |||||
| Packet ID | State | Bound To | Field Name | Field Type | Notes | ||
|---|---|---|---|---|---|---|---|
| 0x27 | Play | Client | |||||
| Window ID | VarInt | The ID of the window that is open; this is an int rather than a byte. | |||||
| Size | Byte | The number of trades in the following array | |||||
| Trades | Input item 1 | Array | Slot | The first item the villager is buying | |||
| Output item | Slot | The item the villager is selling | |||||
| Has second item | Boolean | Whether there is a second item | |||||
| Input item 2 | Optional Slot | The second item the villager is buying; only present if they have a second item. | |||||
| Trade disabled | Boolean | True if the trade is disabled; false if the trade is enabled. | |||||
| Number of trade uses | Integer | Number of times the trade has been used so far | |||||
| Maximum number of trade uses | Integer | Number of times this trade can be used | |||||
| XP | Integer | ||||||
| Special Price | Integer | ||||||
| Price Multiplier | Float | ||||||
| Demand | Integer | ||||||
| Villager level | VarInt | Appears on the trade GUI; meaning comes from the translation key merchant.level. + level. 1: Novice, 2: Apprentice, 3: Journeyman, 4: Expert, 5: Master |
|||||
| Experience | VarInt | Total experience for this villager (always 0 for the wandering trader) | |||||
| Is regular villager | Boolean | True if this is a regular villager; false for the wandering trader. When false, hides the villager level and some other GUI elements. | |||||
| Can restock | Boolean | True for regular villagers and false for the wandering trader. If true, the "Villagers restock up to two times per day." message is displayed when hovering over disabled trades. | |||||